#ifndef STACK_H
#define STACK_H

typedef struct EditAction {
    char operation;//记录操作类型
    int line;//记录行号
    int pos;//记录位置
    char* oldText;//记录旧文本
    char* newText;//记录新文本
} EditAction;

typedef EditAction DataType;//栈中存储的数据类型

struct node 
{
  DataType  info;
  struct node  *link;
};
typedef struct node *PNode;

struct LinkStack {
   PNode  top;
};
typedef struct LinkStack *PLinkStack;
PLinkStack createNullStack_link( );
int Push_LinkStack(PLinkStack L, EditAction *action);
EditAction* Pop_LinkStack(PLinkStack L);
void destroyStack_link(PLinkStack L);
void deepCopyEditAction(EditAction *dest, const EditAction *src);
void freeEditActionStrings(EditAction *action);
#endif